home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 1.iso / ARGONET / PD / FILER / TARSRC.SPK / c / table < prev    next >
Text File  |  1994-08-23  |  2KB  |  83 lines

  1.  
  2. /* table of contents */
  3.  
  4. #include "tar.h"
  5. #include "perms.h"
  6. #include "args.h"
  7. #include "tapeio.h"
  8. #include "table.h"
  9.  
  10.  
  11. void VerboseContents(CatInfo *InfoBlk) {
  12.   int uid,gid,unixmode;
  13.   char DateBuffer[80];
  14.  
  15.   if (Block.Header.linkflag == LF_DIR)
  16.     fputc('d',stdout);
  17.   else
  18.     fputc('-',stdout);
  19.  
  20.   sscanf(Block.Header.mode,"%o",&unixmode);
  21.   pmode(unixmode);
  22.   if (isArchie) {
  23.   } else {
  24.     sscanf(Block.Header.uid,"%o",&uid);
  25.     sscanf(Block.Header.gid,"%o",&gid);
  26.     printf(" %3d/%1d",uid,gid);
  27.   }
  28.   printf(" %7lu ", InfoBlk->Length);
  29.   if (isArchie) {
  30.     if (Block.Header.compressed == CF_COMPRESSED) {
  31.       printf("%2d%% ", compression);
  32.     } else {
  33.       printf("    ");
  34.     }
  35.   }
  36.   os_swi3(OS_ConvertStandardDateAndTime,(int)&InfoBlk->DateAndName,(int)&DateBuffer,80);
  37.   printf("%s ",DateBuffer);
  38. } /* VerboseContents */
  39.  
  40.  
  41. void ListContents(void) {
  42.   int ExtentNo;
  43.   CatInfo InfoBuf;
  44.  
  45.   while (!UserInterrupt) {
  46.     getdir(&InfoBuf);
  47.     if (endtape())
  48.       break;
  49.     switch (Block.Header.linkflag) {
  50.       case LF_OLDNORMAL:
  51.         if (Block.Header.name[0] == 0)
  52.           break;
  53.       case LF_LASTEXTENT:
  54.       case LF_EXTENT:
  55.       case LF_NORMAL:
  56.       case LF_DIR:
  57.       case LF_GNUEXTENT:
  58.         if (MatchesNextArg(NULL)) {
  59.           if (Verbose)
  60.             VerboseContents(&InfoBuf);
  61.           printf("%s", Block.Header.name);
  62.           if (Verbose && MultipleVolumes) {
  63.             switch (Block.Header.linkflag) {
  64.               case LF_EXTENT:
  65.               case LF_LASTEXTENT:
  66.                 sscanf(Block.Header.ExtentNo,"%o",&ExtentNo);
  67.                 printf(" (extent #%d)",ExtentNo);
  68.                 break;
  69.               case LF_GNUEXTENT:
  70.                 printf(" (gnu tar extent)");
  71.                 break;
  72.             }
  73.           }
  74.           putchar('\n');
  75.         }
  76.         passtape(InfoBuf.Length);
  77.         break;
  78.       default:
  79.         break;
  80.     }
  81.   }
  82. } /* ListContents */
  83.